From d46e1288a4fb7ec928829b55f5c724376ba19382 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Fri, 17 Apr 2020 22:23:32 +0100 Subject: [PATCH] Copy axes when rewriting events --- gtk/gtkmain.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/gtk/gtkmain.c b/gtk/gtkmain.c index e1ec1a994d..cbb09c802c 100644 --- a/gtk/gtkmain.c +++ b/gtk/gtkmain.c @@ -1084,6 +1084,8 @@ rewrite_event_for_surface (GdkEvent *event, GdkEventType type; double x, y; double dx, dy; + double *axes = NULL; + guint n_axes = 0; type = gdk_event_get_event_type (event); @@ -1106,6 +1108,16 @@ rewrite_event_for_surface (GdkEvent *event, break; } + if (gdk_event_get_axes (event, &axes, &n_axes)) + { + double *axes_copy = g_memdup (axes, n_axes * sizeof (double)); + + /* The newly created event takes ownership of the axes, so + * we need a copy + */ + axes = axes_copy; + } + switch ((guint) type) { case GDK_BUTTON_PRESS: @@ -1119,7 +1131,7 @@ rewrite_event_for_surface (GdkEvent *event, gdk_event_get_modifier_state (event), gdk_button_event_get_button (event), x, y, - NULL); // FIXME copy axes + axes); case GDK_MOTION_NOTIFY: return gdk_motion_event_new (new_surface, gdk_event_get_device (event), @@ -1128,7 +1140,7 @@ rewrite_event_for_surface (GdkEvent *event, gdk_event_get_time (event), gdk_event_get_modifier_state (event), x, y, - NULL); // FIXME copy axes + axes); case GDK_TOUCH_BEGIN: case GDK_TOUCH_UPDATE: case GDK_TOUCH_END: @@ -1141,7 +1153,7 @@ rewrite_event_for_surface (GdkEvent *event, gdk_event_get_time (event), gdk_event_get_modifier_state (event), x, y, - NULL, // FIXME copy axes + axes, gdk_touch_event_get_emulating_pointer (event)); case GDK_TOUCHPAD_SWIPE: gdk_touchpad_event_get_deltas (event, &dx, &dy); -- 2.30.2